<?php

/**
  这是启动服务 主逻辑 配置页面
 */
use \Workerman\Worker;
use \GatewayWorker\Gateway;
use \Workerman\Autoloader;

require_once __DIR__ . '/../../vendor/autoload.php';

// gateway 进程
$gateway = new Gateway("Websocket://0.0.0.0:7272");
// 设置名称，方便status时查看
$gateway->name = 'ChatGateway';
// 设置进程数，gateway进程数建议与cpu核数相同
$gateway->count = 1;
// 分布式部署时请设置成内网ip（非127.0.0.1）
$gateway->lanIp = '127.0.0.1';
// 内部通讯起始端口。假如$gateway->count=4，起始端口为2300
// 则一般会使用2300 2301 2302 2303 4个端口作为内部通讯端口 
$gateway->startPort = 2300;


// 心跳间隔 每十秒检测一次是否有断开
$gateway->pingInterval = 30;
//客户端连续 pingInterval * pingNotResponseLimit时间内不发送任何数据则断开链接
//并触发onClose。 如果设置为0代表客户端不用发送心跳数据  3*10  没有信息直接踢人
$gateway->pingNotResponseLimit = 1;
// 心跳数据 服务端主动发送心跳(不推荐)
$gateway->pingData = '';
// 服务注册地址
$gateway->registerAddress = '127.0.0.1:1236';


// 当客户端连接上来时，设置连接的onWebSocketConnect，即在websocket握手时的回调
//  echo "client:{$_SERVER['REMOTE_ADDR']}:{$_SERVER['REMOTE_PORT']} gateway:{$_SERVER['GATEWAY_ADDR']}:{$_SERVER['GATEWAY_PORT']}  client_id:$client_id session:" . json_encode($_SESSION) . " onMessage:" . $message . "\n";
//此处设置后 events 不用在设置  设置了无效
$gateway->onConnect = function($connection) {
    $connection->onWebSocketConnect = function($connection, $http_header) {
        // 可以在这里判断连接来源是否合法，不合法就关掉连接
        // $_SERVER['HTTP_ORIGIN']标识来自哪个站点的页面发起的websocket链接
        if ($_SERVER['HTTP_ORIGIN'] != 'http://www.wk_demo.me') {
//            $msg['msg'] = 'so you ip is error fuck';
//            $connection->send(json_encode($msg));
//            $connection->close();
//            return;
        }
        // onWebSocketConnect 里面$_GET $_SERVER是可用的
         var_dump($_GET, $_SERVER);
    };
};

// 如果不是在根目录启动，则运行runAll方法
if (!defined('GLOBAL_START')) {
    Worker::runAll();
}

